package practico.impl;

import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import practico.PedidoService;
import practico.entidades.Cliente;
import practico.entidades.Estado;
import practico.entidades.HistorialPedido;
import practico.entidades.Pedido;
import practico.entidades.Transportista;
import practico.patronDAO.PedidoDAO;

public class PedidoServiceImpl implements PedidoService {

	private PedidoDAO dao;
	
	  // Setter utilizado por Spring.
	  @Autowired(required = true)
	  public void setPedidoDao(PedidoDAO pedidoDao) {
	    this.dao = pedidoDao;
	  }

	
	private PedidoServiceImpl(){
		
	}
	
	@Override
	public void crearPedido(Pedido pedido) {
		dao.crearPedido(pedido);

	}

	@Override
	public void actualizarPedido(Pedido pedido) {
		dao.actualizarPedido(pedido);
	
	}

	@Override
	public List<Pedido> buscarPedidos(Estado estado) {
	
		return dao.buscarPedidos(estado);
	}

	@Override
	public void eliminar(Pedido pedido) {
		
		dao.eliminar(pedido);
		
	}

	@Override
	public List<Pedido> buscarPedidosRealizados(Cliente cl) {
		
		return dao.buscarPedidosRealizados(cl);
	}

	@Override
	public List<Pedido> buscarPedidosAsignados(Transportista transportista) {
		return dao.buscarPedidosAsignados(transportista);
	}

	@Override
	public void asignarPedidoaTransportista(Pedido pedido,Transportista transportista, Date fechaCambioEstado, String comentario) {
		//TODO le pongo 0 al id pero se deberia generar automaticamente. 
		HistorialPedido h=new HistorialPedido(0, Estado.A_RETIRAR, fechaCambioEstado, new Date(), comentario);
		pedido.addHistorial(h);
		h.setPedido(pedido);
		pedido.setTransportista(transportista);
		dao.asignarPedidoaTransportista(pedido, transportista);
		
	}

	@Override
	public void actualizarEstadoOrden(Pedido pedido, Estado estado, Date fechaCambioEstado, String comentario) {
		//TODO le pongo 0 al id pero se deberia generar automaticamente. 
		HistorialPedido h=new HistorialPedido(0, estado, fechaCambioEstado, new Date(), comentario);
		pedido.addHistorial(h);
		h.setPedido(pedido);
		dao.actualizarEstadoOrden(pedido);
	}

}
